package main

import (
	"fmt"
	"time"
)

/**
 * 通道是可以关闭的
 * @return {[type]} [description]
 */
func main() {
	chan1 := make(chan int, 5)
	sign := make(chan int, 1)

	go func() {
		for i := 0; i < 5; i++ {
			chan1 <- i
			time.Sleep(1 * time.Second)
		}
		close(chan1)
		fmt.Println("closed")
		sign <- 0 //这个是为了阻塞进程的
	}()

	go func() {
		for {
			e, ok := <-chan1
			fmt.Printf("%d (%v)\n", e, ok)
			if !ok {
				fmt.Println("chanle closed")
				break
			}
			time.Sleep(2 * time.Second)
		}
		fmt.Println("done")
		sign <- 1 //这个是为了阻塞进程的
	}()
	<-sign //第一个进程结束
	<-sign //第二个进程结束
}
